home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C128
/
Monthly Disks
/
(y)aca.d64
/
hack1.sfx
/
hacking1.3-3
< prev
Wrap
Text File
|
1990-02-12
|
9KB
|
212 lines
.$1432 [A9 00 ] LDA #$00 ;SET THE NUMERATOR FRACTIONAL PORTION TO .0
.$1434 [85 60 ] STA $60
.$1436 [85 61 ] STA $61
.$1438 [20 CF 13] JSR $13CF ;32-BIT DIVIDE
.$143B [68 ] PLA ;IF THE SIGN OF THE RESULT IS SUPPOSED TO BE
.$143C [10 19 ] BPL $1457 ; POSITIVE, THEN EXIT
.$143E [38 ] SEC ;IF THE SIGN OF THE RESULT IS NEGATIVE, TAKE
.$143F [A9 00 ] LDA #$00 ; GET THE 2'S COMPLEMENT OF THE POSITIVE
.$1441 [E5 64 ] SBC $64 ; RESULT
.$1443 [85 64 ] STA $64
.$1445 [A9 00 ] LDA #$00
.$1447 [E5 65 ] SBC $65
.$1449 [85 65 ] STA $65
.$144B [A9 00 ] LDA #$00
.$144D [E5 66 ] SBC $66
.$144F [85 66 ] STA $66
.$1451 [A9 00 ] LDA #$00
.$1453 [E5 67 ] SBC $67
.$1455 [85 67 ] STA $67
.$1457 [60 ] RTS
;*****************************************************************************
;* GET THE ╪ AND ┘ PLOTTING INCREMENTS AND THE PIXELS-TO-PLOT COUNT *
;*****************************************************************************
.$1458 [A5 0C ] LDA $0C ;GET ┴┬╙(─╪)
.$145A [A4 0D ] LDY $0D
.$145C [20 1A 14] JSR $141A
.$145F [85 FA ] STA $FA
.$1461 [84 FB ] STY $FB
.$1463 [A5 10 ] LDA $10 ;GET ┴┬╙(─┘)
.$1465 [A4 11 ] LDY $11
.$1467 [20 1A 14] JSR $141A
.$146A [85 FC ] STA $FC
.$146C [84 FD ] STY $FD
.$146E [A5 FC ] LDA $FC ;COMPARE ┴┬╙(─┘) TO ┴┬╙(─╪)
.$1470 [C5 FA ] CMP $FA
.$1472 [A5 FD ] LDA $FD
.$1474 [E5 FB ] SBC $FB
.$1476 [B0 44 ] BCS $14BC ;IF ┴┬╙(─┘) >= ┴┬╙(─╪) THEN BRANCH AHEAD
.$1478 [A5 FA ] LDA $FA ;SET PIXELS-TO-PLOT COUNT TO ┴┬╙(─╪)
.$147A [85 12 ] STA $12
.$147C [85 50 ] STA $50
.$147E [A5 FB ] LDA $FB
.$1480 [85 13 ] STA $13
.$1482 [85 51 ] STA $51 ;SET THE NUMERATOR (TOP) TO ─┘ AND THE
.$1484 [A5 FC ] LDA $FC ; DENOMINATOR (BOTTOM) TO ┴┬╙(─╪)
.$1486 [85 62 ] STA $62
.$1488 [A5 FD ] LDA $FD
.$148A [85 63 ] STA $63
.$148C [A5 11 ] LDA $11 ;GET THE SIGN OF ─┘ - WILL BE THE SIGN OF DIV
.$148E [20 31 14] JSR $1431 ;PERFORM THE SIGNED FRACTIONAL DIVISION
.$1491 [A2 03 ] LDX #$03 ;STORE THE RESULT IN THE ┘ INCREMENT VALUE
.$1493 [B5 64 ] LDA $64,X
.$1495 [95 0E ] STA $0E,X
.$1497 [CA ] DEX
.$1498 [10 F9 ] BPL $1493
.$149A [A5 0D ] LDA $0D ;GET THE ╪ INCREMENT
.$149C [30 0A ] BMI $14A8
.$149E [A9 00 ] LDA #$00 ;IF ─╪ IS POSITIVE, ╪ INC IS +1
.$14A0 [85 0D ] STA $0D ; (NOTE THAT ─╪ CANNOT BE 0 HERE SO WE DON'T
.$14A2 [A9 01 ] LDA #$01 ; HAVE TO WORRY ABOUT THAT CASE)
.$14A4 [85 0C ] STA $0C
.$14A6 [D0 06 ] BNE $14AE
.$14A8 [A9 FF ] LDA #$FF ;IF ─╪ IS NEGATIVE, ╪ INC IS -1
.$14AA [85 0D ] STA $0D
.$14AC [85 0C ] STA $0C
.$14AE [38 ] SEC ;TAKE THE NEGATIVE OF THE NUMBER OF PIXELS
.$14AF [A9 00 ] LDA #$00 ; TO PLOT AND EXIT
.$14B1 [E5 12 ] SBC $12 ;╔ DON'T REMEMBER EXACTLY WHY ╔ USE THE
.$14B3 [85 12 ] STA $12 ; NEGATIVE; THERE IS NOT MUCH OF A SPEED
.$14B5 [A9 00 ] LDA #$00 ; IMPROVEMENT. ╧H WELL, T'IS DONE.
.$14B7 [E5 13 ] SBC $13
.$14B9 [85 13 ] STA $13
.$14BB [60 ] RTS
.$14BC [A5 FC ] LDA $FC ;SET THE PIXELS-TO-PLOT COUNT TO ┴┬╙(─┘)
.$14BE [85 12 ] STA $12
.$14C0 [85 50 ] STA $50
.$14C2 [A5 FD ] LDA $FD
.$14C4 [85 13 ] STA $13
.$14C6 [85 51 ] STA $51 ;SET THE NUMERATOR (TOP) TO ─╪ AND THE
.$14C8 [A5 FA ] LDA $FA ; DENOMINATOR(BOTTOM) TO ┴┬╙(─┘)
.$14CA [85 62 ] STA $62
.$14CC [A5 FB ] LDA $FB
.$14CE [85 63 ] STA $63
.$14D0 [A5 0D ] LDA $0D ;GET THE SIGN OF ─╪ - WILL BE THE SIGN OF DIV
.$14D2 [20 31 14] JSR $1431 ;DO THE 32-BIT SIGNED FRACTIONAL DIVISION
.$14D5 [A2 03 ] LDX #$03 ;STORE THE RESULT IN THE ╪ INCREMENT
.$14D7 [B5 64 ] LDA $64,X
.$14D9 [95 0A ] STA $0A,X
.$14DB [CA ] DEX
.$14DC [10 F9 ] BPL $14D7
.$14DE [4C EA 14] JMP $14EA ;JUMP OVER THE NEXT SECTION
;-------
.$14E1 [2C FF FF] BIT $FFFF ;╘HIS SECTION CONTAINED JUNK BEFORE AND ╔
.$14E4 [2C FF FF] BIT $FFFF ; DON'T KNOW HOW IT GOT HERE. ╔ REPLACED
.$14E7 [2C FF FF] BIT $FFFF ; IT WITH ┬╔╘S AND NOW JUMP OVER IT.
;-------
.$14EA [A5 11 ] LDA $11
.$14EC [30 0A ] BMI $14F8
.$14EE [A9 00 ] LDA #$00 ;IF ─┘ IS POSITIVE THEN ┘ INC IS +1
.$14F0 [85 11 ] STA $11 ; (WE DO NOT HAVE TO WORRY ABOUT THE CASE
.$14F2 [A9 01 ] LDA #$01 ; OF ─┘ BEING ZERO SINCE THEN THE INCREMENT
.$14F4 [85 10 ] STA $10 ; WOULD NOT BE IMPORTANT)
.$14F6 [D0 06 ] BNE $14FE
.$14F8 [A9 FF ] LDA #$FF ;IF ─┘ IS NEGATIVE THEN ┘ INC IS -1
.$14FA [85 11 ] STA $11
.$14FC [85 10 ] STA $10
.$14FE [4C AE 14] JMP $14AE ;JUMP BACK TO THE EXIT
;*****************************************************************************
;* MAIN ROUTINE: DRAW LINE OR SET PIXEL CURSOR POSITION *
;*****************************************************************************
.$1501 [B0 07 ] BCS $150A ;GOTO DRAW ROUTINE IF .├=1
.$1503 [85 8B ] STA $8B ;STORE X AND Y PIXEL CURSOR COORDINATES
.$1505 [86 8C ] STX $8C
.$1507 [84 8D ] STY $8D
.$1509 [60 ] RTS ;EXIT SET PIXEL CURSOR
.$150A [85 04 ] STA $04 ;SAVE DRAW-TO COORDINATES
.$150C [86 05 ] STX $05
.$150E [84 08 ] STY $08
.$1510 [A2 07 ] LDX #$07 ;CLEAR $0A-$0D AND $0E-$11
.$1512 [A9 00 ] LDA #$00
.$1514 [95 0A ] STA $0A,X
.$1516 [CA ] DEX
.$1517 [10 FB ] BPL $1514
.$1519 [38 ] SEC ;GET DX VALUE = ─RAW╘O╪ - ╨IXEL├URSOR╪
.$151A [A5 04 ] LDA $04 ; DX IS AT [$0D $0C . $0B $0A]
.$151C [E5 8B ] SBC $8B
.$151E [85 0C ] STA $0C
.$1520 [A5 05 ] LDA $05
.$1522 [E5 8C ] SBC $8C
.$1524 [85 0D ] STA $0D
.$1526 [38 ] SEC ;GET DY VALUE = ─RAW╘O┘ - ╨IXEL├URSOR┘
.$1527 [A5 08 ] LDA $08 ; DY IS AT [$11 $10 . $0F $0E]
.$1529 [E5 8D ] SBC $8D
.$152B [85 10 ] STA $10
.$152D [A9 00 ] LDA #$00
.$152F [B0 02 ] BCS $1533
.$1531 [A9 FF ] LDA #$FF
.$1533 [85 11 ] STA $11
.$1535 [20 58 14] JSR $1458 ;CALCULATE THE ╪ AND ┘ PLOTTING INCREMENTS
.$1538 [A5 8B ] LDA $8B ;SET THE DRAWING ╪ POSITION TO X+0.5
.$153A [85 04 ] STA $04 ; ╪ IS AT [$05 $04 . $03 $02]
.$153C [A5 8C ] LDA $8C
.$153E [85 05 ] STA $05
.$1540 [A9 80 ] LDA #$80
.$1542 [85 03 ] STA $03
.$1544 [85 07 ] STA $07
.$1546 [A9 00 ] LDA #$00
.$1548 [85 02 ] STA $02
.$154A [85 06 ] STA $06
.$154C [A5 8D ] LDA $8D ;SET THE DRAWING ┘ POSITION TO Y+0.5
.$154E [85 08 ] STA $08 ; ┘ IS AT [$09 $08 . $07 $06]
.$1550 [A9 00 ] LDA #$00
.$1552 [85 09 ] STA $09
.$1554 [A5 04 ] LDA $04 ;GET THE PIXEL ╪ AND ┘ COORDINATES
.$1556 [A6 05 ] LDX $05
.$1558 [A4 08 ] LDY $08
.$155A [20 A8 13] JSR $13A8 ;PLOT THE PIXEL
.$155D [A5 12 ] LDA $12 ;CHECK THE PIXELS-TO-PLOT COUNT FOR ZERO
.$155F [05 13 ] ORA $13
.$1561 [F0 3B ] BEQ $159E ;IF NO MORE PIXELS TO PLOT, EXIT LOOP
.$1563 [18 ] CLC ;ADD THE ╪ INCREMENT TO THE ╪ COORDINATE
.$1564 [A5 02 ] LDA $02
.$1566 [65 0A ] ADC $0A
.$1568 [85 02 ] STA $02
.$156A [A5 03 ] LDA $03
.$156C [65 0B ] ADC $0B
.$156E [85 03 ] STA $03
.$1570 [A5 04 ] LDA $04
.$1572 [65 0C ] ADC $0C
.$1574 [85 04 ] STA $04
.$1576 [A5 05 ] LDA $05
.$1578 [65 0D ] ADC $0D
.$157A [85 05 ] STA $05
.$157C [18 ] CLC ;ADD THE ┘ INCREMENT TO THE ┘ COORDINATE
.$157D [A5 06 ] LDA $06
.$157F [65 0E ] ADC $0E
.$1581 [85 06 ] STA $06
.$1583 [A5 07 ] LDA $07
.$1585 [65 0F ] ADC $0F
.$1587 [85 07 ] STA $07
.$1589 [A5 08 ] LDA $08
.$158B [65 10 ] ADC $10
.$158D [85 08 ] STA $08
.$158F [A5 09 ] LDA $09
.$1591 [65 11 ] ADC $11
.$1593 [85 09 ] STA $09
.$1595 [E6 12 ] INC $12 ;INCREMENT THE PIXELS TO PLOT COUNT
.$1597 [D0 BB ] BNE $1554 ; NOTE THAT IT IS STORED AS THE NEGATIVE OF
.$1599 [E6 13 ] INC $13 ; THE COUNT
.$159B [4C 54 15] JMP $1554 ;REPEAT PLOTTING LOOP
.$159E [A5 04 ] LDA $04 ;EXIT - SET THE PIXEL CURSOR POSITION TO THE
.$15A0 [A6 05 ] LDX $05 ; LAST PIXEL PLOTTED ON THE LINE
.$15A2 [A4 08 ] LDY $08
.$15A4 [4C 03 15] JMP $1503